package cn.structure.linear.queue;

import java.util.Arrays;

/**
 * 队列数据结构
 *
 * @author dunlingiz
 * @date 2024/2/21
 */
public class MyQueue {

    private int[] queueArray;

    private int font;

    private int rear;

    public MyQueue(int capacity) {
        this.queueArray = new int[capacity];
    }

    public void enQueue(int element) throws Exception {
        //（队尾下标 + 1） % 队列长度 来计算
        //以数组长度来进行循环，所以需要整除取余数组长度
        if ((rear + 1) >= queueArray.length - 1) {
            throw new Exception("队列已满");
        }
        queueArray[rear] = element;
        // （队尾下标 + 1） % 队列长度  ==>计算队尾下标
        rear++;
    }

    /**
     * 出队操作
     */
    public int deQueue() throws Exception {
        if (rear == font) {
            throw new Exception("队列已空");
        }
        int deQueueElement = queueArray[font];
        font++;
        return deQueueElement;
    }

    public int getFont() {
        return queueArray[font];
    }

    public int getRear() {
        return queueArray[rear];
    }

    public void out() {
        //注意被移出去的数据
        System.out.println(Arrays.toString(queueArray));
    }
}
